<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
<title>SimpleDecoder (ExoPlayer library)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="SimpleDecoder (ExoPlayer library)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.google.android.exoplayer2.decoder</a></div>
<h2 title="Class SimpleDecoder" class="title">Class SimpleDecoder&lt;I extends <a href="DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,&#8203;O extends <a href="OutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">OutputBuffer</a>,&#8203;E extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.google.android.exoplayer2.decoder.SimpleDecoder&lt;I,&#8203;O,&#8203;E&gt;</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a>&lt;I,&#8203;O,&#8203;E&gt;</code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="../ext/flac/FlacDecoder.html" title="class in com.google.android.exoplayer2.ext.flac">FlacDecoder</a></code>, <code><a href="../ext/av1/Gav1Decoder.html" title="class in com.google.android.exoplayer2.ext.av1">Gav1Decoder</a></code>, <code><a href="../ext/opus/OpusDecoder.html" title="class in com.google.android.exoplayer2.ext.opus">OpusDecoder</a></code>, <code><a href="../text/SimpleSubtitleDecoder.html" title="class in com.google.android.exoplayer2.text">SimpleSubtitleDecoder</a></code>, <code><a href="../ext/vp9/VpxDecoder.html" title="class in com.google.android.exoplayer2.ext.vp9">VpxDecoder</a></code></dd>
</dl>
<hr>
<pre>public abstract class <span class="typeNameLabel">SimpleDecoder&lt;I extends <a href="DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,&#8203;O extends <a href="OutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">OutputBuffer</a>,&#8203;E extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>&gt;</span>
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a>
implements <a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a>&lt;I,&#8203;O,&#8203;E&gt;</pre>
<div class="block">Base class for <a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder"><code>Decoder</code></a>s that use their own decode thread and decode each input buffer
 immediately into a corresponding output buffer.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(I%5B%5D,O%5B%5D)">SimpleDecoder</a></span>&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>[]&nbsp;inputBuffers,
             <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>[]&nbsp;outputBuffers)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected abstract <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createInputBuffer()">createInputBuffer</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates a new input buffer.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected abstract <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createOutputBuffer()">createOutputBuffer</a></span>()</code></th>
<td class="colLast">
<div class="block">Creates a new output buffer.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected abstract <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createUnexpectedDecodeException(java.lang.Throwable)">createUnexpectedDecodeException</a></span>&#8203;(<a href="https://developer.android.com/reference/java/lang/Throwable.html" title="class or interface in java.lang" class="externalLink" target="_top">Throwable</a>&nbsp;error)</code></th>
<td class="colLast">
<div class="block">Creates an exception to propagate for an unexpected decode error.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected abstract <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decode(I,O,boolean)">decode</a></span>&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>&nbsp;inputBuffer,
      <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>&nbsp;outputBuffer,
      boolean&nbsp;reset)</code></th>
<td class="colLast">
<div class="block">Decodes the <code>inputBuffer</code> and stores any decoded output in <code>outputBuffer</code>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dequeueInputBuffer()">dequeueInputBuffer</a></span>()</code></th>
<td class="colLast">
<div class="block">Dequeues the next input buffer to be filled and queued to the decoder.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dequeueOutputBuffer()">dequeueOutputBuffer</a></span>()</code></th>
<td class="colLast">
<div class="block">Dequeues the next output buffer from the decoder.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#flush()">flush</a></span>()</code></th>
<td class="colLast">
<div class="block">Flushes the decoder.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#queueInputBuffer(I)">queueInputBuffer</a></span>&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>&nbsp;inputBuffer)</code></th>
<td class="colLast">
<div class="block">Queues an input buffer to the decoder.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#release()">release</a></span>()</code></th>
<td class="colLast">
<div class="block">Releases the decoder.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#releaseOutputBuffer(O)">releaseOutputBuffer</a></span>&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>&nbsp;outputBuffer)</code></th>
<td class="colLast">
<div class="block">Releases an output buffer back to the decoder.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setInitialInputBufferSize(int)">setInitialInputBufferSize</a></span>&#8203;(int&nbsp;size)</code></th>
<td class="colLast">
<div class="block">Sets the initial size of each input buffer.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></h3>
<code><a href="https://developer.android.com/reference/java/lang/Object.html#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_top">wait</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.com.google.android.exoplayer2.decoder.Decoder">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;com.google.android.exoplayer2.decoder.<a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a></h3>
<code><a href="Decoder.html#getName()">getName</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(com.google.android.exoplayer2.decoder.DecoderInputBuffer[],com.google.android.exoplayer2.decoder.OutputBuffer[])">
<!--   -->
</a><a id="&lt;init&gt;(I[],O[])">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SimpleDecoder</h4>
<pre>protected&nbsp;SimpleDecoder&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>[]&nbsp;inputBuffers,
                        <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>[]&nbsp;outputBuffers)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>inputBuffers</code> - An array of nulls that will be used to store references to input buffers.</dd>
<dd><code>outputBuffers</code> - An array of nulls that will be used to store references to output buffers.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="setInitialInputBufferSize(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInitialInputBufferSize</h4>
<pre class="methodSignature">protected final&nbsp;void&nbsp;setInitialInputBufferSize&#8203;(int&nbsp;size)</pre>
<div class="block">Sets the initial size of each input buffer.
 <p>
 This method should only be called before the decoder is used (i.e. before the first call to
 <a href="#dequeueInputBuffer()"><code>dequeueInputBuffer()</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>size</code> - The required input buffer size.</dd>
</dl>
</li>
</ul>
<a id="dequeueInputBuffer()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dequeueInputBuffer</h4>
<pre class="methodSignature">@Nullable
public final&nbsp;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>&nbsp;dequeueInputBuffer()
                           throws <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Decoder.html#dequeueInputBuffer()">Decoder</a></code></span></div>
<div class="block">Dequeues the next input buffer to be filled and queued to the decoder.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Decoder.html#dequeueInputBuffer()">dequeueInputBuffer</a></code>&nbsp;in interface&nbsp;<code><a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a>&lt;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a> extends <a href="DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a> extends <a href="OutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">OutputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The input buffer, which will have been cleared, or null if a buffer isn't available.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="Decoder.html" title="type parameter in Decoder">E</a></code> - If a decoder error has occurred.</dd>
<dd><code><a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a></code></dd>
</dl>
</li>
</ul>
<a id="queueInputBuffer(com.google.android.exoplayer2.decoder.DecoderInputBuffer)">
<!--   -->
</a><a id="queueInputBuffer(I)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>queueInputBuffer</h4>
<pre class="methodSignature">public final&nbsp;void&nbsp;queueInputBuffer&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>&nbsp;inputBuffer)
                            throws <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Decoder.html#queueInputBuffer(I)">Decoder</a></code></span></div>
<div class="block">Queues an input buffer to the decoder.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Decoder.html#queueInputBuffer(I)">queueInputBuffer</a></code>&nbsp;in interface&nbsp;<code><a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a>&lt;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a> extends <a href="DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a> extends <a href="OutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">OutputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>inputBuffer</code> - The input buffer.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="Decoder.html" title="type parameter in Decoder">E</a></code> - If a decoder error has occurred.</dd>
<dd><code><a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a></code></dd>
</dl>
</li>
</ul>
<a id="dequeueOutputBuffer()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dequeueOutputBuffer</h4>
<pre class="methodSignature">@Nullable
public final&nbsp;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>&nbsp;dequeueOutputBuffer()
                            throws <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Decoder.html#dequeueOutputBuffer()">Decoder</a></code></span></div>
<div class="block">Dequeues the next output buffer from the decoder.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Decoder.html#dequeueOutputBuffer()">dequeueOutputBuffer</a></code>&nbsp;in interface&nbsp;<code><a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a>&lt;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a> extends <a href="DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a> extends <a href="OutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">OutputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The output buffer, or null if an output buffer isn't available.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="Decoder.html" title="type parameter in Decoder">E</a></code> - If a decoder error has occurred.</dd>
<dd><code><a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a></code></dd>
</dl>
</li>
</ul>
<a id="releaseOutputBuffer(com.google.android.exoplayer2.decoder.OutputBuffer)">
<!--   -->
</a><a id="releaseOutputBuffer(O)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>releaseOutputBuffer</h4>
<pre class="methodSignature">@CallSuper
protected&nbsp;void&nbsp;releaseOutputBuffer&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>&nbsp;outputBuffer)</pre>
<div class="block">Releases an output buffer back to the decoder.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>outputBuffer</code> - The output buffer being released.</dd>
</dl>
</li>
</ul>
<a id="flush()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>flush</h4>
<pre class="methodSignature">public final&nbsp;void&nbsp;flush()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Decoder.html#flush()">Decoder</a></code></span></div>
<div class="block">Flushes the decoder. Ownership of dequeued input buffers is returned to the decoder. The caller
 is still responsible for releasing any dequeued output buffers.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Decoder.html#flush()">flush</a></code>&nbsp;in interface&nbsp;<code><a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a>&lt;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a> extends <a href="DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a> extends <a href="OutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">OutputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a id="release()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>release</h4>
<pre class="methodSignature">@CallSuper
public&nbsp;void&nbsp;release()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Decoder.html#release()">Decoder</a></code></span></div>
<div class="block">Releases the decoder. Must be called when the decoder is no longer needed.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Decoder.html#release()">release</a></code>&nbsp;in interface&nbsp;<code><a href="Decoder.html" title="interface in com.google.android.exoplayer2.decoder">Decoder</a>&lt;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a> extends <a href="DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a> extends <a href="OutputBuffer.html" title="class in com.google.android.exoplayer2.decoder">OutputBuffer</a>,&#8203;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a> extends <a href="DecoderException.html" title="class in com.google.android.exoplayer2.decoder">DecoderException</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a id="createInputBuffer()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createInputBuffer</h4>
<pre class="methodSignature">protected abstract&nbsp;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>&nbsp;createInputBuffer()</pre>
<div class="block">Creates a new input buffer.</div>
</li>
</ul>
<a id="createOutputBuffer()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createOutputBuffer</h4>
<pre class="methodSignature">protected abstract&nbsp;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>&nbsp;createOutputBuffer()</pre>
<div class="block">Creates a new output buffer.</div>
</li>
</ul>
<a id="createUnexpectedDecodeException(java.lang.Throwable)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createUnexpectedDecodeException</h4>
<pre class="methodSignature">protected abstract&nbsp;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a>&nbsp;createUnexpectedDecodeException&#8203;(<a href="https://developer.android.com/reference/java/lang/Throwable.html" title="class or interface in java.lang" class="externalLink" target="_top">Throwable</a>&nbsp;error)</pre>
<div class="block">Creates an exception to propagate for an unexpected decode error.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>error</code> - The unexpected decode error.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The exception to propagate.</dd>
</dl>
</li>
</ul>
<a id="decode(com.google.android.exoplayer2.decoder.DecoderInputBuffer,com.google.android.exoplayer2.decoder.OutputBuffer,boolean)">
<!--   -->
</a><a id="decode(I,O,boolean)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>decode</h4>
<pre class="methodSignature">@Nullable
protected abstract&nbsp;<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">E</a>&nbsp;decode&#8203;(<a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">I</a>&nbsp;inputBuffer,
                            <a href="SimpleDecoder.html" title="type parameter in SimpleDecoder">O</a>&nbsp;outputBuffer,
                            boolean&nbsp;reset)</pre>
<div class="block">Decodes the <code>inputBuffer</code> and stores any decoded output in <code>outputBuffer</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>inputBuffer</code> - The buffer to decode.</dd>
<dd><code>outputBuffer</code> - The output buffer to store decoded data. The flag <a href="../C.html#BUFFER_FLAG_DECODE_ONLY"><code>C.BUFFER_FLAG_DECODE_ONLY</code></a> will be set if the same flag is set on <code>inputBuffer</code>, but
     may be set/unset as required. If the flag is set when the call returns then the output
     buffer will not be made available to dequeue. The output buffer may not have been populated
     in this case.</dd>
<dd><code>reset</code> - Whether the decoder must be reset before decoding.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A decoder exception if an error occurred, or null if decoding was successful.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>
